package user.code.dao;

import org.springframework.stereotype.Repository;

@Repository
public interface UserDao {

    /**
     * 账号注册的实现（可以自定义用户账号，也可以使用手机号，通过正则表达式筛选手机号注册的类型）
     * 1.接收json数据
     * 2.现在不考虑账号的保密，将直接保存账号
     * 3.密码仍应做加密处理，对用户信息做保密
     * return insert操作 返回int类型的行受影响数affect row
     * 成功>0
     * 失败<1
     * 异常（未测试）
     */
    public int registerAcont(com.sample.User user);

    /**
     * 账号登录的实现-无token-并对无token的合法用户发放token
     * 1.接收json数据(前端的密码发送进来应该是加密状态)
     * 2.解析json数据
     * 3.解析数据库中的密码
     * 4.验证
     * 5.生成token
     * 6.发送token给用户
     * return select操作 返回string类型的已查得数据，无数据（null）则代表无该用户
     */
    public String loginNoToken(com.sample.User user);

    /**
     * 验证用户账号（自定义账号/手机号）是否重复
     * 此功能的数据应尝试放入redis中，以便加快查询速度
     * 1.接收json数据（用户账号）
     * 2.查询重复情况
     * 3.返回验证信息
     * return select操作 返回string类型的已查得数据，无数据（null）则代表用户名未重复
     */
    public String checkUserAccount(com.sample.User user);

    /**
     * --用户携带合法token进行登录验证，不需要访问数据库，只需要在控制层和服务层进行业务即可--
     * 账号登录的实现-携带token
     * 1.接收json数据(用户持有的有效令牌)
     * 2.验证令牌的时效和真伪
     * 成功返回1
     * 失败返回0
     * 异常返回-1
     */
    public int loginWithToken(com.sample.User user);

}
